package main

import "go-leetcode/leetcode/utils"

func levelOrder(root *utils.TreeNode) [][]int {
	// 使用队列来遍历
	var res [][]int
	if root == nil {
		return res
	}

	var nodeQueue []*utils.TreeNode
	nodeQueue = append(nodeQueue, root)

	for len(nodeQueue) > 0 {
		currLevel := nodeQueue[:]
		var currLevelVal []int
		nodeQueue = nil
		for _, node := range currLevel {
			currLevelVal = append(currLevelVal, node.Val)
			if node.Left != nil {
				nodeQueue = append(nodeQueue, node.Left)
			}
			if node.Right != nil {
				nodeQueue = append(nodeQueue, node.Right)
			}
		}
		res = append(res, currLevelVal)
	}

	return res
}

// 给你二叉树的根节点 root ，返回其节点值的 层序遍历 。 （即逐层地，从左到右访问所有节点）。
//
//
//
//示例 1：
//
//
//输入：root = [3,9,20,null,null,15,7]
//输出：[[3],[9,20],[15,7]]
//示例 2：
//
//输入：root = [1]
//输出：[[1]]
//示例 3：
//
//输入：root = []
//输出：[]
//
//
//提示：
//
//树中节点数目在范围 [0, 2000] 内
//-1000 <= Node.val <= 1000
